package br.unb.cic.algostep.gui.variaveis;

public enum Tipo {
	VOID, INTEGER, REAL, STRING, CHAR, BOOLEAN;
	
	public String getCorrespondentString() {
		switch(this) {
			case INTEGER:
				return "integer";
			case REAL:
				return "real";
			case STRING:
				return "string";
			case CHAR:
				return "char";
			case BOOLEAN:
				return "boolean";
			default:
				return "";
		}
	}
	
	public Variavel getCorrespondingVariavel(String nome, Object valor) {
		Variavel v = null;
		
		switch (this) {
			case BOOLEAN:
				v = new VarBoolean(nome);
				break;
			case CHAR:
				v = new VarChar(nome);
				break;
			case INTEGER:
				v = new VarInteger(nome);
				break;
			case REAL:
				v = new VarReal(nome);
				break;
			case STRING:
				v = new VarString(nome);
				break;
		}
		
		if (v != null) {
			v.setValor(valor);
			return v;
		} else {
			throw new IllegalArgumentException(
					"Parâmetro não pode ter tipo void!");
		}
	}
}
